package com.woniuxy.amusementparkos.service.fzw;

import java.util.Collection;
import java.util.List;

import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.util.ByteSource;

import com.woniuxy.amusementparkos.entity.fzw.Role;
import com.woniuxy.amusementparkos.entity.fzw.User;

public interface UserService {

	void register(User user);
	
	/**
	 * 接口静态方法，用于注册时密码的混合加密
	 * @param username	用户名
	 * @param password	密码(明文)
	 * @return 返回盐和加密密码，盐需要存数据库保存，每个用户盐值不同
	 */
	public static String[] encryptPassword(String username,String password)
    {
        String salt = new SecureRandomNumberGenerator().nextBytes().toBase64().replace("==", ""); //生成盐值
        String ciphertext = new Md5Hash(password,salt+username,1024).toString(); //生成的密文

        String[] strings = new String[]{salt, ciphertext};

        return strings;
    }
	/**
	 * 根据用户名在数据库查询对应信息
	 * @param username
	 * @return
	 */
	User selectOneUserByName(String username);

	String selectPasswordByUsername(String username);

	/**
	 * 查询登录用户的所有角色信息
	 * @param principal
	 * @return
	 */
	Collection<String> selectAllRoleByUsername(String principal);

	/**
	 * @param roles
	 * @return
	 */
	Collection<String> selectAllPermissionByRoles(Collection<String> roles);

	/**
	 * 根据用户名查询真实姓名
	 * @param username
	 * @return
	 */
	String selectAccountByUsername(String username);

	/**
	 * 根据用户名查User
	 * @param username
	 * @return
	 */
	User selectUserByUsername(String username);

	/**
	 * 根据用户id查询所有菜单
	 * @param user_id
	 * @return
	 */
	List<String> selectMenusByUserId(int user_id);
	
	


}
